﻿// Decompiled with JetBrains decompiler
// Type: System.Web.Razor.Generator.MarkupCodeGenerator
// Assembly: System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
// MVID: 682513D6-F37E-48AC-9909-F3EE103CFF14
// Assembly location: D:\Project\Idea\无人机外网\uav\客户端工程\排查工具\bin\Release\System.Web.Razor.dll

using System.Web.Razor.Parser.SyntaxTree;

namespace System.Web.Razor.Generator
{
  /// <summary>This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code. Represents a code generator for markup.</summary>
  public class MarkupCodeGenerator : SpanCodeGenerator
  {
    /// <summary>This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code. Generates the code for the markup.</summary>
    /// <param name="target">The source span whose content represents the markup.</param>
    /// <param name="context">The context of the code generator.</param>
    public override void GenerateCode(Span target, CodeGeneratorContext context)
    {
      if (!context.Host.DesignTimeMode && string.IsNullOrEmpty(target.Content))
        return;
      if (context.Host.EnableInstrumentation)
        context.AddContextCall(target, context.Host.GeneratedClassContext.BeginContextMethodName, true);
      if (!string.IsNullOrEmpty(target.Content) && !context.Host.DesignTimeMode)
      {
        string generatedCode = context.BuildCodeString((Action<CodeWriter>) (cw =>
        {
          if (!string.IsNullOrEmpty(context.TargetWriterName))
          {
            cw.WriteStartMethodInvoke(context.Host.GeneratedClassContext.WriteLiteralToMethodName);
            cw.WriteSnippet(context.TargetWriterName);
            cw.WriteParameterSeparator();
          }
          else
            cw.WriteStartMethodInvoke(context.Host.GeneratedClassContext.WriteLiteralMethodName);
          cw.WriteStringLiteral(target.Content);
          cw.WriteEndMethodInvoke();
          cw.WriteEndStatement();
        }));
        context.AddStatement(generatedCode);
      }
      if (!context.Host.EnableInstrumentation)
        return;
      context.AddContextCall(target, context.Host.GeneratedClassContext.EndContextMethodName, true);
    }

    /// <summary>This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code. Returns the string representation for this instance.</summary>
    /// <returns>The string representation for this instance.</returns>
    public override string ToString() => "Markup";

    /// <summary>This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code. Determines whether the specified object is equal to this instance.</summary>
    /// <returns>true if the specified object is equal to this instance; otherwise, false.</returns>
    /// <param name="obj">The object to compare to this instance.</param>
    public override bool Equals(object obj) => obj is MarkupCodeGenerator;

    /// <summary>This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code. Returns the hash code for this instance.</summary>
    /// <returns>The hash code for this instance.</returns>
    public override int GetHashCode() => base.GetHashCode();
  }
}
